package com.woniuxy.car.boss.client;

import com.woniuxy.car.boss.param.product.BossAddSpecsParam;
import com.woniuxy.car.boss.param.product.BossSerchProductParam;
import com.woniuxy.car.boss.param.product.BossUpdateStock;
import com.woniuxy.car.common.resultcode.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@FeignClient(contextId = "productBossClient",name="boss")
public interface ProductBossClient {

    /**
     * 从数据库分页查询商品(SPU)
     * @param
     * @return
     */
    @PostMapping("/searchSpu")
    public Result searchSpu(@RequestBody BossSerchProductParam serchProductParam);

    /**
     * 根据id查询商品(SPU)
     * @param productId
     * @return
     */
    @GetMapping("/product/{id}")
    public Result getProductDetailById(@PathVariable("id")Integer productId);

    /**
     * 【综合】根据属性编号查询商品(SKU)
     * @param propValueIds
     * @return
     */
    @GetMapping("/getSpecs")
    public Result getSkuInfo(@RequestParam("propValueIds") List<Integer> propValueIds);

    /**
     * 获取多个商品(SKU)
     * @param skuIds
     * @return
     */
    @GetMapping("/findProductById")
    public Result findSkuById(@RequestParam("skuIds")List<Integer> skuIds);


    /**
     *  【增减库存】
     * @param updateStock
     *addOrSubtract=true表示减库存 ， =false表示增加库存
     * @return
     */
    @PostMapping("/updateStock")
    public Result updateStock(@RequestBody BossUpdateStock updateStock );

    /**
     * 上传SKU到ES
     * @return
     */
    @GetMapping("/upAllSpecsToEs")
    public Result upAllSpecsToEs();

    /**
     * 获取SKU所有属性和属性值
     * @param productsId
     * @return
     */
    @GetMapping("/getAllSpecsById")
    Result getAllSpecsById(@RequestParam("productsId") Integer productsId);

    /**
     * 新增SKU
     * @param addSpecsParam
     * @return
     */
    @PostMapping("/addSpecs")
    Result addSpecs(@RequestBody BossAddSpecsParam addSpecsParam);

    /**
     * 上架
     * @param specsId
     * @return
     */
    @GetMapping("/upOneSpecsToEs")
    Result upOneSpecsToEs(@RequestParam("specsId") Integer specsId);

    /**
     * 下架
     * @param specsId
     * @return
     */
    @GetMapping("/downOneSpecsFromEs")
    Result downOneSpecsFromEs(@RequestParam("specsId") Integer specsId);
}
